package com.w.picture.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.w.picture.mode.dto.space.analyze.*;
import com.w.picture.mode.entity.Space;
import com.w.picture.mode.entity.User;
import com.w.picture.mode.vo.space.analyze.*;

import java.util.List;

/**
 * @author w
 * @description 单独的处理空间分析的服务类
 * @createDate 2025-01-18 19:29:25
 */
public interface SpaceAnalyzeService extends IService<Space> {


    /**
     * 获取空间使用情况分析(就是空间的使用情况,使用了的总图片体积)
     *
     * @param request
     * @param loginUser
     * @return
     */
    SpaceUsageAnalyzeResponse getSpaceUsageAnalyze(SpaceAnalyzeRequest request, User loginUser);

    /**
     * 获取空间分类分析(就是根据不同的分类去计算已经使用了的总图片体积)
     *
     * @param request
     * @param loginUser
     * @return
     */
    List<SpaceCategoryAnalyzeResponse> getSpaceCategoryAnalyze(SpaceCategoryAnalyzeRequest request, User loginUser);

    /**
     * 获取空间标签分析(这个是根据标签分类去计算已经使用了的总图片体积)
     *
     * @param request
     * @param loginUser
     * @return
     */
    List<SpaceTagAnalyzeResponse> getSpaceTagAnalyze(SpaceTagAnalyzeRequest request, User loginUser);

    /**
     * 获取空间大小分析(这个就是根据已使用了的总图片体积的一个范围分段进行计算)
     *
     * @param spaceSizeAnalyzeRequest
     * @param loginUser
     * @return
     */
    List<SpaceSizeAnalyzeResponse> getSpaceSizeAnalyze(SpaceSizeAnalyzeRequest spaceSizeAnalyzeRequest, User loginUser);

    /**
     * 获取空间用户分析数据(根据时间段,或者 用户id)
     *
     * @param spaceUserAnalyzeRequest
     * @param loginUser
     * @return
     */
    List<SpaceUserAnalyzeResponse> getSpaceUserAnalyze(SpaceUserAnalyzeRequest spaceUserAnalyzeRequest, User loginUser);

    /**
     * 获取空间排行分析数据-根据空间的使用情况排序
     *
     * @param spaceRankAnalyzeRequest
     * @param loginUser
     * @return
     */
    List<Space> getSpaceRankAnalyze(SpaceRankAnalyzeRequest spaceRankAnalyzeRequest, User loginUser);
}
